#pragma once

#include "MxUtils\MxVersionInfo1.h"

#ifdef $projectname$_EXPORTS
#define $projectname$_API __declspec(dllexport)
#else
#define $projectname$_API __declspec(dllimport)
#endif

class $projectname$_API Plugin
{
public:

	bool		SetVersionInfo( HMODULE hModule = NULL) { return _VersionInfo.SetVersionInfo(hModule); }

	const wchar_t *GetwPathFilename() { return _VersionInfo.GetwPathFilename(); }		//filename returned by ::GetModuleFileName() of hModule in DllMain, DLL_PROCESS_ATTACH
	const char *GetProductName() {  return _VersionInfo.GetProductName(); }				//VS_VERSION_INFO::ProductName
	const char *GetDescription() {  return _VersionInfo.GetDescription();  }			//VS_VERSION_INFO::FileDescription
	const char *GetVersion() {  return _VersionInfo.GetVersion();  }					//VS_VERSION_INFO::ProductVersion
	const char *GetOwner() {  return _VersionInfo.GetOwner(); }							//VS_VERSION_INFO::CompanyName	
	const char *GetCopyrightNotice() {  return _VersionInfo.GetCopyrightNotice(); }		//VS_VERSION_INFO::LegalCopyright
	const char *GetProductID() {    return _VersionInfo.GetProductID(); }				//VS_VERSION_INFO::InternalName GUID - for a MxPlugin this is same as its folder name in PluginRootFolder	


	static Plugin& Inst()
	{
		static Plugin    instance;			// Guaranteed to be destroyed. Instantiated on first use.
		return instance;
	}

private:
	Plugin();
	~Plugin();
    Plugin(Plugin const&);					// Don't Implement
    void operator=(Plugin const&);			// Don't implement

	MxVersionInfo _VersionInfo;
};


